<template>
    <div>
        <ul>
            <li v-for="m of messageList" :key="m.id">
                <!-- 调整路由并携带query参数 -->
                <!-- <router-link to="/home/message/detail?id=001&title=消息001">{{m.title}}</router-link> &nbsp;&nbsp; -->

                <!-- 调整路由并携带 params 参数，to的字符串写法 -->
                <!-- <router-link :to="`/home/message/detail/${m.id}/${m.title}`">{{m.title}}</router-link> &nbsp;&nbsp; -->

                <!-- 使用命名路由，可以使用命令路由替换path，直接定位到路由路径 -->
                <router-link :to="{
                    name: 'detail', // 如果携带是是params，此处不能使用path，只能使用name来寻找路径组件
                    params: {
                        id: m.id,
                        title: m.title
                    }
                }">
                    {{m.title}}
                </router-link> &nbsp;&nbsp;

                <button @click="pushShow(m)">push查看</button>
                <button @click="replaceShow(m)">replace查看</button>
            </li>
        </ul>
        <hr>
        <!-- 要展示的界面的占位 -->
        <router-view></router-view>
    </div>
</template>

<script>
    export default {
        name: 'Message',
        data() {
            return {
                messageList: [
                    { id: '001', title: '消息001' },
                    { id: '002', title: '消息002' },
                    { id: '003', title: '消息003' },
                ]
            }
        },
        methods: {
            pushShow(m) {
                // 打印输出路由器，路由器可以指定跳转到的位置，路由器就是VueRouter构造函数实例对象
                // 比如push、replace放到VueRouter 缔造者的原型对象上了。
                console.log(this.$router);

                this.$router.push({
                    name: 'detail', // 如果携带是是params，此处不能使用path，只能使用name来寻找路径组件
                    params: {
                        id: m.id,
                        title: m.title
                    }
                });
            },
            replaceShow(m) {
                this.$router.replace({
                    name: 'detail', // 如果携带是是params，此处不能使用path，只能使用name来寻找路径组件
                    params: {
                        id: m.id,
                        title: m.title
                    }
                });
            }
        },
    }   
</script>

<style lang="css">

</style>